package com.hroze.util.web;

import java.io.File;
import java.io.IOException;

import org.apache.commons.io.FileUtils;

import com.hroze.util.OgnlUtil;


/**
 * @author 王志湖 E-mail:695w@163.com
 * @version 创建时间：2010-1-24 上午04:49:02 类说明 虚拟路径管理器
 */
public class ContextManager {
	/**
	 * @param contextPath
	 *            虚拟路径地址，英文字符串（不含/或者\）如：abcedfiensaiede
	 * @param docBase
	 *            虚拟路径对应的物理路径，不可以包含英文地址 如：D:/workspace/ERMP/WebRoot/，
	 *            注意：使用反斜杠冒号出错！
	 * @return
	 */
	public static boolean addContext(String contextPath, String docBase) {
		String path = SystemConfig.getTOMCAT_HOME() + System.getProperty("file.separator")
				+ "conf" + System.getProperty("file.separator") + "Catalina"
				+ System.getProperty("file.separator") + SystemConfig.getAPP_HOST()
				+ System.getProperty("file.separator");
		File dir = new File(path);
		if (!dir.exists()) {
			dir.mkdirs();
		}
		path += contextPath + ".xml";
		File file = new File(path);
		FileUtils.deleteQuietly(file);
		try {
			file.createNewFile();
			String content = OgnlUtil.apply(SystemConfig.CONFIG
					.get("contextTpl"), "docBase", docBase);
			FileUtils.writeStringToFile(file, content);
			// 保存文件
			Prop p = new Prop(SystemConfig
					.getClassRealPath("/context.properties"));
			p.set(contextPath, docBase);
			p.save();
		} catch (IOException e) {
			e.printStackTrace();
			return false;
		}
		return true;
	}

	/**
	 * 删除虚拟路径
	 * 
	 * @param contextPath
	 */
	public static void removeContext(String contextPath) {
		String path = SystemConfig.getTOMCAT_HOME() + "work"
				+ System.getProperty("file.separator") + "Catalina"
				+ System.getProperty("file.separator")
				+ SystemConfig.getAPP_HOST()
				+ System.getProperty("file.separator");
		path += contextPath + ".xml";
		FileUtils.deleteQuietly(new File(path));
		Prop p = new Prop(SystemConfig.getClassRealPath("/context.properties"));
		p.remove(contextPath);
		p.save();
	}

}
